package se.djupfeldt.oscar.logbook.utils;
public class NMEA3_01 {
    public static class BOD{
	public enum Fields {
	    TrueBearing("True Bearing", false, "standard"),
	    True("True", false, "standard"),
	    MagneticBearing("Magnetic Bearing", false, "standard"),
	    Magnetic("Magnetic", false, "standard"),
	    EndWaypoint("End Waypoint", false, "standard"),
	    StartWaypoint("Start Waypoint", true, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class BWC{
	public enum Fields {
	    Timestamp("Timestamp", false, "standard"),
	    NextWaypointLatitude("Next Waypoint Latitude", false, "standard"),
	    NorthorSouth("North or South", false, "standard"),
	    NextWaypointLongitude("Next Waypoint Longitude", false, "standard"),
	    EastorWest("East or West", false, "standard"),
	    TrueTracktoWaypoint("True Track to Waypoint", false, "standard"),
	    TrueTrack("True Track", false, "standard"),
	    MagneticTracktoWaypoint("Magnetic Track to Waypoint", false, "standard"),
	    MagneticTrack("Magnetic Track", false, "standard"),
	    RangetoWaypoint("Range to Waypoint", false, "standard"),
	    UnitofRangetoWaypoint("Unit of Range to Waypoint", false, "standard"),
	    WaypointName("Waypoint Name", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class GGA{
	public enum Fields {
	    Timestamp("Timestamp", false, "standard"),
	    Latitude("Latitude", false, "standard"),
	    NorthorSouth("North or South", false, "standard"),
	    Longitude("Longitude", false, "standard"),
	    EastorWest("East or West", false, "standard"),
	    GPSQuality("GPS Quality", false, "standard"),
	    NumberofSatelites("Number of Satelites", false, "standard"),
	    HorizontalDilutionofPosition("Horizontal Dilution of Position", false, "standard"),
	    AntennaAltitude("Antenna Altitude", false, "standard"),
	    AntennaAltitudeUnit("Antenna Altitude Unit", false, "standard"),
	    GeoidalSeparation("Geoidal Separation", false, "standard"),
	    GeoidalSeparationUnit("Geoidal Separation Unit", false, "standard"),
	    TimeSinceLastUpdateFromDiff_Ref_Station("Time Since Last Update From Diff. Ref. Station", false, "standard"),
	    Diff_Ref_StationID("Diff. Ref. Station ID", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class GLL{
	public enum Fields {
	    Latitude("Latitude", false, "standard"),
	    NorthorSouth("North or South", false, "standard"),
	    Longitude("Longitude", false, "standard"),
	    EastorWest("East or West", false, "standard"),
	    Timestamp("Timestamp", false, "standard"),
	    DataValid("Data Valid", false, "standard"),
	    FAAMode("FAA Mode", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class GSA{
	public enum Fields {
	    SelectionMode("Selection Mode", false, "standard"),
	    Mode("Mode", false, "standard"),
	    Satelite1ID("Satelite 1 ID", false, "standard"),
	    Satelite2ID("Satelite 2 ID", false, "standard"),
	    Satelite3ID("Satelite 3 ID", false, "standard"),
	    Satelite4ID("Satelite 4 ID", false, "standard"),
	    Satelite5ID("Satelite 5 ID", false, "standard"),
	    Satelite6ID("Satelite 6 ID", false, "standard"),
	    Satelite7ID("Satelite 7 ID", false, "standard"),
	    Satelite8ID("Satelite 8 ID", false, "standard"),
	    Satelite9ID("Satelite 9 ID", false, "standard"),
	    Satelite10ID("Satelite 10 ID", false, "standard"),
	    Satelite11ID("Satelite 11 ID", false, "standard"),
	    Satelite12ID("Satelite 12 ID", false, "standard"),
	    PDOP("PDOP", false, "standard"),
	    HDOP("HDOP", false, "standard"),
	    VDOP("VDOP", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class GSV{
	public enum Fields {
	    NumberofGSVSentencesinGroup("Number of GSV Sentences in Group", false, "standard"),
	    SentencesNumberinGroup("Sentences Number in Group", false, "standard"),
	    TotalNumberofSatelitesinView("Total Number of Satelites in View", false, "standard"),
	    SatelitePRNNumber1("Satelite PRN Number 1", false, "standard"),
	    Elevation1("Elevation 1", false, "standard"),
	    Azimuth1("Azimuth 1", false, "standard"),
	    SNR1("SNR 1", false, "standard"),
	    SatelitePRNNumber2("Satelite PRN Number 2", false, "standard"),
	    Elevation2("Elevation 2", false, "standard"),
	    Azimuth2("Azimuth 2", false, "standard"),
	    SNR2("SNR 2", false, "standard"),
	    SatelitePRNNumber3("Satelite PRN Number 3", false, "standard"),
	    Elevation3("Elevation 3", false, "standard"),
	    Azimuth3("Azimuth 3", false, "standard"),
	    SNR3("SNR 3", false, "standard"),
	    SatelitePRNNumber4("Satelite PRN Number 4", false, "standard"),
	    Elevation4("Elevation 4", false, "standard"),
	    Azimuth4("Azimuth 4", false, "standard"),
	    SNR4("SNR 4", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class HDT{
	public enum Fields {
	    Heading("Heading", false, "standard"),
	    True("True", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class R00{
	public enum Fields {
	    Waypoints("Waypoints", false, "variable-list"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class RMA{
	public enum Fields {
	    DataStatus("Data Status", false, "standard"),
	    Latitude("Latitude", false, "standard"),
	    NorthorSouth("North or South", false, "standard"),
	    Longitude("Longitude", false, "standard"),
	    EastorWest("East or West", false, "standard"),
	    NotUsed1("Not Used 1", false, "standard"),
	    NotUsed2("Not Used 2", false, "standard"),
	    SpeedOverGround("Speed Over Ground", false, "standard"),
	    CourseOverGround("Course Over Ground", false, "standard"),
	    Variation("Variation", false, "standard"),
	    DirectionofVariation("Direction of Variation", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class RMB{
	public enum Fields {
	    Validity1("Validity 1", false, "standard"),
	    OffTrack("Off Track", false, "standard"),
	    SteerLeftorRight("Steer Left or Right", false, "standard"),
	    LastWaypoint("Last Waypoint", false, "standard"),
	    NextWaypoint("Next Waypoint", false, "standard"),
	    LatitudeofNextWaypoint("Latitude of Next Waypoint", false, "standard"),
	    NorthorSouth("North or South", false, "standard"),
	    LongitudeofNextWaypoint("Longitude of Next Waypoint", false, "standard"),
	    EastorWest("East or West", false, "standard"),
	    Range("Range", false, "standard"),
	    BearingtoNextWaypoint("Bearing to Next Waypoint", false, "standard"),
	    ClosingVelocity("Closing Velocity", false, "standard"),
	    Validity2("Validity 2", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class RMC{
	public enum Fields {
	    TimeStamp("Time Stamp", false, "standard"),
	    Validity("Validity", false, "standard"),
	    CurrentLatitude("Current Latitude", false, "standard"),
	    NorthorSouth("North or South", false, "standard"),
	    CurrentLongitude("Current Longitude", false, "standard"),
	    EastorWest("East or West", false, "standard"),
	    Speed("Speed", false, "standard"),
	    TrueCourse("True Course", false, "standard"),
	    DateStamp("Date Stamp", false, "standard"),
	    Variation("Variation", false, "standard"),
	    DirectionofVariation("Direction of Variation", false, "standard"),
	    FAAMode("FAA Mode", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class RTE{
	public enum Fields {
	    NumberofRTESentencesinGroup("Number of RTE Sentences in Group", false, "standard"),
	    SentenceNumberinGroup("Sentence Number in Group", false, "standard"),
	    RouteInfo("Route Info", false, "standard"),
	    RouteName("Route Name", false, "standard"),
	    Waypoints("Waypoints", false, "variable-list"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class STN{
	public enum Fields {
	    TalkerIDNumber("Talker ID Number", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class VBW{
	public enum Fields {
	    LongitudinalWaterSpeed("Longitudinal Water Speed", false, "standard"),
	    TransverseWaterSpeed("Transverse Water Speed", false, "standard"),
	    Status1("Status 1", false, "standard"),
	    LongitudinalGroundSpeed("Longitudinal Ground Speed", false, "standard"),
	    TransverseGroundSpeed("Transverse Ground Speed", false, "standard"),
	    Status2("Status 2", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
    public static class VTG{
	public enum Fields {
	    TrackDegreesTrue("Track Degrees True", false, "standard"),
	    True("True", false, "standard"),
	    TrackDegreesMagnetic("Track Degrees Magnetic", false, "standard"),
	    Magnetic("Magnetic", false, "standard"),
	    SpeedinKnots("Speed in Knots", false, "standard"),
	    Knots("Knots", false, "standard"),
	    SpeedinKilometersPerHour("Speed in Kilometers Per Hour", false, "standard"),
	    KilometersPerHour("Kilometers Per Hour", false, "standard"),
	    FAAMode("FAA Mode", false, "standard"),
	    Checksum("Checksum", false, "standard");

	    public final String key;
	    public final boolean optional;
	    public final String fieldType;

	    private Fields(String key, boolean optional, String fieldType) {
		this.key = key;
		this.optional = optional;
		this.fieldType = fieldType;
	    }
	}
    }
}
